package hcn.protocol.ods.newdiagnosis;

import lombok.Data;
import lombok.ToString;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * @description: 由于诊间支付与云支付合并，去除诊间支付的科室节点，以处方为单位，故新增返回类
 * @author: chenJij@bsoft.com.cn
 * @date: 2020/6/18 10:50
 */
@Data
@ToString
public class NewQueryUnPayListResponseBean implements Serializable {

    /**
     * patientCode : 患者在 his 中的唯一标识
     * patientMedicalCardType : 诊疗卡类型
     * patientMedicalCardNumber : 诊疗卡号
     * medicalInformation : [{"whetherpay":true,"countDown":"倒计时，就诊单据有效期倒计时（单位：秒）","medicalDate":"就诊日期(yyyy-MM-dd HH:mm:ss)","doctorName":"就诊医生姓名","doctorId":"医生代码","departmentName":"就诊科室名称","deptId":"科室代码","totalCost":"合计金额(该次就诊所有单据总金额)(格式：0.00)","identificationNumber":"识别序号(单据在HIS中的唯一识别序号,多个识别序号用逗号分隔)","emergencyNumber":"就诊序号，就诊系统中每次就诊的唯一标识","medicalRemark":"就诊备注","pharmacyId":"归并发药药房识别号，多个以逗号分开并去重","mergingItems":[{"mergingCode":"归并代码(1西药费、2中药费、3草药费、4检查费、5检验费、6代煎费、7快递费等)","mergingName":"合并名称/费用归并名称(西药费、中药费、中草药费、检查费、检验费、代煎费、快递费等)","mergingSubtotal":"归并小计(格式：0.00)","mergingRemark":"归并备注","detailsItems":[{"itemName":"费用名称（中草药方的费用名称为该处方的所有药品与数量单位的拼接，把数量和单位放在英文括号中，各药品之间用四个空格分隔。比如一个中草药处方有8味药，itemName字段的值示例如下:人参(4g) 卜芥(4g) 丁香(4g) 刀豆(4g) 干姜(4g) 广白(4g) 大蓟(4g) 山丹(4g)","itemNumber":"数量（中草药方的数量为该药方的帖数,如：五帖，该字段值传：共五帖）   string","price":"单价（中草药方的单价为空）","amount":"金额（中草药方的金额为该处方的金额）","unit":"单位","specifications":"规格","itemRemark":"项目备注"}]}],"feeRecord":{"feeRecord":"收费单据","feeNo":"收费单据标识","feeTypeCode":"收费单据类型","feeType":"类型名称","feeDesc":"收费单据描述","feeDate":"费用日期","totalFee":"金额","required":"是否必选"}}]
     */

    private String patientCode;
    private String patientMedicalCardType;
    private String patientMedicalCardNumber;
    private String recordType;
    private String recordTypeName;
    private String consultId;
    //是否存在待支付订单  1 是   0否
    private String unPayRecordFlag = "0";
    private String deptName;
    private double totalFee;
    private Date consultTime;
    private List<MergingItemsBean> mergingItems;


    @Data
    @ToString
    public static class MergingItemsBean {
        /**
         * outpatientType : 门诊类型
         * mergingCode : 归并代码(1西药费、2中药费、3草药费、4检查费、5检验费、6代煎费、7快递费等)
         * mergingName : 合并名称/费用归并名称(西药费、中药费、中草药费、检查费、检验费、代煎费、快递费等)
         * mergingSubtotal : 归并小计(格式：0.00)
         * mergingRemark : 归并备注
         * detailsItems : [{"itemName":"费用名称（中草药方的费用名称为该处方的所有药品与数量单位的拼接，把数量和单位放在英文括号中，各药品之间用四个空格分隔。比如一个中草药处方有8味药，itemName字段的值示例如下:人参(4g) 卜芥(4g) 丁香(4g) 刀豆(4g) 干姜(4g) 广白(4g) 大蓟(4g) 山丹(4g)","itemNumber":"数量（中草药方的数量为该药方的帖数,如：五帖，该字段值传：共五帖）   string","price":"单价（中草药方的单价为空）","amount":"金额（中草药方的金额为该处方的金额）","unit":"单位","specifications":"规格","itemRemark":"项目备注"}]
         * whetherpay : 是否可支付
         * medicalDate : 就诊日期(yyyy-MM-dd HH:mm:ss)
         * doctorName : 就诊医生姓名
         * doctorId : 医生代码
         * departmentName : 就诊科室名称
         * deptId : 科室代码
         * totalCost : 合计金额(该次就诊所有单据总金额)(格式：0.00)
         * identificationNumber : 识别序号(单据在HIS中的唯一识别序号,多个识别序号用逗号分隔)
         * serialNumber : 就诊序号，就诊系统中每次就诊的唯一标识
         * medicalRemark : 就诊备注
         * mergingItems : [{"mergingCode":"归并代码(1西药费、2中药费、3草药费、4检查费、5检验费、6代煎费、7快递费等)","mergingName":"合并名称/费用归并名称(西药费、中药费、中草药费、检查费、检验费、代煎费、快递费等)","mergingSubtotal":"归并小计(格式：0.00)","mergingRemark":"归并备注","detailsItems":[{"itemName":"费用名称（中草药方的费用名称为该处方的所有药品与数量单位的拼接，把数量和单位放在英文括号中，各药品之间用四个空格分隔。比如一个中草药处方有8味药，itemName字段的值示例如下:人参(4g) 卜芥(4g) 丁香(4g) 刀豆(4g) 干姜(4g) 广白(4g) 大蓟(4g) 山丹(4g)","itemNumber":"数量（中草药方的数量为该药方的帖数,如：五帖，该字段值传：共五帖）   string","price":"单价（中草药方的单价为空）","amount":"金额（中草药方的金额为该处方的金额）","unit":"单位","specifications":"规格","itemRemark":"项目备注"}]}]
         * feeRecord : {"feeRecord":"收费单据","feeNo":"收费单据标识","feeTypeCode":"收费单据类型","feeType":"类型名称","feeDesc":"收费单据描述","feeDate":"费用日期","totalFee":"金额","required":"是否必选"}
         */
        private boolean whetherpay = true;
        private String medicalDate;
        private String outpatientType;
        private String consultId;
        private String mpiId;
        private String orgId;
        private String organizationId;
        private String hospitalCode;
        private String hospitalName;
        private String doctorName;
        private String doctorCode;
        private String departmentName;
        private Long countDown;
        private String expirationDate;
        private String departmentCode;
        private double totalCost;
        private String identificationNumber;
        private String serialNumber;
        private String medicalRemark;
        private int mergingCode;
        private String mergingName;
        private double mergingSubtotal;
        private String mergingRemark;
        private String pharmacyId;
        private String feeNo;
        /**
         * 4系Phis抵用券核销的时候需要使用的
         */
        private String voucherItemId;
        private String feeTypeCode;
        private String feeTypeName;
        private String feeDesc;
        private String feeDate;
        private String required;
        private String itemName;
        /**
         * 检查申请单记录id
         */
        private String checkRequisitionRecordId;
        /**
         * 检验申请单记录id
         */
        private String examineRequisitionRecordId;

        /**
         * 申请单号
         */
        private String applicationNo;

        private List<DetailsItemsBean> detailsItems;

        @Data
        @ToString
        public static class DetailsItemsBean {
            /**
             * mergingCode : 归并代码(1西药费、2中药费、3草药费、4检查费、5检验费、6代煎费、7快递费等)
             * itemName : 费用名称（中草药方的费用名称为该处方的所有药品与数量单位的拼接，把数量和单位放在英文括号中，各药品之间用四个空格分隔。比如一个中草药处方有8味药，itemName字段的值示例如下:人参(4g) 卜芥(4g) 丁香(4g) 刀豆(4g) 干姜(4g) 广白(4g) 大蓟(4g) 山丹(4g)
             * itemNumber : 数量（中草药方的数量为该药方的帖数,如：五帖，该字段值传：共五帖）   string
             * price : 单价（中草药方的单价为空）
             * amount : 金额（中草药方的金额为该处方的金额）
             * unit : 单位
             * specifications : 规格
             * itemRemark : 项目备注
             *
             */

            private int mergingCode;
            private String itemName;
            private String itemNumber;
            private double price;
            private double amount;
            private String unit;
            private String specifications;
            private String itemRemark;
        }
    }
}
